]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
padOsd: Use non-deprecated librsvg API to create handle
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 26 Apr 2019 11:03:42 +0000 (13:03 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Sat, 27 Apr 2019 05:50:08 +0000 (05:50 +0000)
On one hand, we were using a path instead of an URI on
rsvg_handle_set_base_uri(). This broke at some point in librsvg
(presumably for the best, handling paths there sounds non-standard)
leaving a blank svg (As the base image wouldn't be accessed).

On the other hand, we use this with the deprecated rsvg_handle_write()
which we should drift away from.

Using rsvg_handle_new_from_stream_sync() neatly solves both. We use
newer API based on input streams and GFiles, and it internally does
the right thing, bringing the pad OSD back to life.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1220
js/ui/padOsd.js

index 760f48a37dce09b0d43cbc9499600d83d0ff37ac..a4af4729741da93e4bdbbfef358fd7f2146d5d43 100644 (file)
@@ -374,12 +374,12 @@ var PadDiagram = GObject.registerClass({
         svgData += this._cssString();
         svgData += this._wrappingSvgFooter();
 
-        let handle = new Rsvg.Handle();
-        handle.set_base_uri(GLib.path_get_dirname(this._imagePath));
-        handle.write(svgData);
-        handle.close();
+        let istream = new Gio.MemoryInputStream();
+        istream.add_bytes(new GLib.Bytes(svgData));
 
-        return handle;
+        return Rsvg.Handle.new_from_stream_sync(istream,
+                                                Gio.File.new_for_path(this._imagePath),
+                                                0, null);
     }
 
     _updateDiagramScale() {